5. Working with DynamoDB using AWS Console
#
34. Table-level Operations with AWS ConsoleDynamoDB Dashboard 에서 버튼을 누릅니다.
테이블 이름
td_notes
- 테이블 이름은 변경할 수 없습니다.
- 테이블 이름을 변경하는 것은 기존 테이블을 삭제하고, 새로운 테이블을 만드는 것과 같습니다.
- (td : prefix abbr, training demo)
파티션 키
user_id
- Binary 와 Number 보다는 다양한 타입을 표현할 수 있는 문자열 타입을 선호합니다.
정렬 키 - 선택 사항
timestamp
- Projected attributes
- 파티션과는 별개로, 어떤 Item 의 Attributes 가 특정 인덱스에 저장하려는 키인지 결정합니다. ?
- 인덱스의 크기에 영향을 끼칩니다.
- 어플리케이션의 방향성에 따라 결정되어야 합니다.
- Include
- 수동으로 Item Attributes 를 20 개 까지 지정 가능.
- All
- 20개 (Include option) 보다 더 필요할 경우.
- Keys only
- Secondary indexes
- Local Secondary Index
- 인덱스는 테이블과 동일한 파티션을 사용하고 테이블에 할당된 RCUs 와 WCUs 도 공유합니다.
- Global Secondary Index
- 인덱스가 자체 파티션에 저장되고, RCUs WCUs 는 자체 테이블과 분리되어 있습니다.
- 언제든지 추가 가능
- 파티션 키로
noteId
에 대한 인덱스를 생성합니다. - 여기서는 sort key 를 사용하지 않습니다.
- note_id 가 unique 한 값이기 때문에, 하나의 item 은 하나의 파티션키를 가집니다.
- Local Secondary Index
- Auto Scaling
- 이번 세션에서는 모두 해제 합니다.
- Read/Write Capacity Units
- 테스트시 1로 충분합니다.
- 테이블 생성 후에 Global Secondary Index 인
note_id
의 RCU 와 WCU 도 1 로 변경합니다.
#
35. Item-level Operations with AWS Console- 34 에서, 모든 컬럼을 정의하지 않았습니다. DynamoDB 는 스키마에 엄격하지 않기 때문입니다.
- PK 만 필수이며, Secondary 인덱스에 사용되는 attribute 를 포함하여 다른 모든 attribute 는 선택사항 입니다.
- item1 과 item2 가 PK 를 모두 포함한다고 가정했을 때, item1 은 2개의 attribute 를 가질 수 있고 item2 는 10개의 attribute 를 가질 수 있습니다.
- item1 에 secondary index 에 대한 값이 없다면, item1 은 해당 인덱스에서 제외됩니다.
td_notes
테이블에 Item 을 추가해 봅시다.
- S (String), N (Number) 를 의미합니다.
- 체크박스를 선택하면 더 많은 Action 을 할 수 있습니다.
쿼리 항목에서, user_id 값은 필수이고 sort key 인 timestamp 값은 옵션입니다.
따라서, 하나의 partition 내에서 sort 가 이루어집니다.filter 는 항상 query 가 실행된 후에 수행됩니다.
따라서 RCU 소비에 영향이 없습니다.scan
- 테이블, 파티션 전체에서 검색을 수행하기 때문에, real capacity unit 을 매우 빠르게 사용할 수 있습니다.
- 가능한 사용하지 않는 것이 좋습니다.
애플리케이션이 현재와 미래에 수행해야 하는 쿼리 작업의 다양한 가능성을 고려하여 테이블 키와 인덱스를 매우 신중하게 선택해야 합니다.
미리 생각하고 가능한 미래의 사용 사례도 고려해야 합니다.
그래야 미래에 어떤 사용 사례가 발생하더라도 전체 테이블을 다시 만들지 않아도 됩니다.